package top.yangbuyi.service.impl;

import top.yangbuyi.domain.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import top.yangbuyi.domain.SimpleUser;
import top.yangbuyi.dto.MenuDto;
import top.yangbuyi.vo.AjaxResult;

import java.util.List;
import java.util.Map;

/**
* ClassName: Loginfo
* Description: 杨不易网站 :www.yangbuyi.top
* date: 2020/8/27
* @author TeouBle
* @author yangbuyi
* @since JDK 1.8
* @desc 前端菜单接口API
**/

public interface MenuService{

    /**
     * @功能描述:查询全部菜单数据
     * @Description:
     * @Author: TeouBle
     * @Date: 2020/9/3 16:42
     */
    List<Menu> listAllMenus(MenuDto menuDto);

    /**
     * 查询菜单信息
     * 如查用户是超级管理员，那么查询所有菜单和权限
     * 如果用户是普通用户，那么根据用户ID关联角色和权限
     * @param isAdmin
     * @param simpleUser
     * @return menu
     */
    public List<Menu> selectMenuTree(boolean isAdmin, SimpleUser simpleUser);
    /**
    * @功能描述:动态路由
    * @Description:
    * @Author: TeouBle
    * @Date: 2020/9/3 17:15
    */
    public List<Map<String, Object>> dynamicMenu();

    /**
    * @功能描述:根据菜单ID获取菜单信息
    * @Description:
    * @Author: TeouBle
    * @Date: 2020/9/3 17:15
    */
    Menu getMenuById(Integer id);

    /**
    * @功能描述:添加菜单
    * @Description:
    * @Author: TeouBle
    * @Date: 2020/9/3 17:15
    */
    int addMenu(MenuDto menuDto);

    /**
    * @功能描述:根据菜单id删除菜单
    * @Description:逻辑：判断是否有子节点有的话那么就要进行删除子节点再来删除
    * @Author: TeouBle
    * @Date: 2020/9/3 17:16
    */
    int deleteMenuById(Long asList);

    /**
    * @功能描述:更新菜单数据
    * @Description:
    * @Author: TeouBle
    * @Date: 2020/9/3 17:16
    */
    int update(MenuDto menuDto);

    /**
    * @功能描述:校验是否有子节点
    * @Description:
    * @Author: TeouBle
    * @Date: 2020/9/3 17:12
    */
    boolean hasChilenByMenuID(Long menuid);

	  List<Long> getMenuIdsByRoleId(Long getMenuIdsByRoleId);
}
